package com.example.userdepartment.service;

import com.example.userdepartment.entity.Department;

import java.util.List;

/**
 * 部门服务接口
 */
public interface DepartmentService {
    
    /**
     * 查询所有部门
     *
     * @return 部门列表
     */
    List<Department> findAll();
    
    /**
     * 根据ID查询部门
     *
     * @param id 部门ID
     * @return 部门信息
     */
    Department findById(Integer id);
    
    /**
     * 根据部门ID查询部门及其下所有用户
     *
     * @param id 部门ID
     * @return 包含用户列表的部门
     */
    Department findWithUsersById(Integer id);
    
    /**
     * 添加部门
     *
     * @param department 部门信息
     * @return 添加后的部门
     */
    Department add(Department department);
    
    /**
     * 更新部门
     *
     * @param department 部门信息
     * @return 更新后的部门
     */
    Department update(Department department);
    
    /**
     * 删除部门
     *
     * @param id 部门ID
     * @return 是否删除成功
     */
    boolean delete(Integer id);
    
    /**
     * 批量删除部门
     *
     * @param ids 部门ID列表
     * @return 是否删除成功
     */
    boolean batchDelete(List<Integer> ids);
    
    /**
     * 搜索部门
     *
     * @param keyword 关键字（部门名称、描述）
     * @return 部门列表
     */
    List<Department> searchDepartments(String keyword);
    
    /**
     * 导出部门数据到Excel
     *
     * @return Excel文件字节数组
     */
    byte[] exportDepartments();
} 